--TEST--
Basic XMLType test
--SKIPIF--
<?php 
if (!extension_loaded("simplexml")) die("skip no simplexml extension");
$target_dbs = array('oracledb' => true, 'timesten' => false);  // test runs on these DBs
require(dirname(__FILE__).'/skipif.inc');
?>
--FILE--
<?php

require(dirname(__FILE__)."/connect.inc");

// Initialization

$stmtarray = array(
	"drop table xtt",
	"create table xtt
		   (xt_id number, xt_spec xmltype)
		   xmltype xt_spec store as clob",
	"insert into xtt (xt_id, xt_spec) values
	  (1,
	   xmltype('<?xml version=\"1.0\"?>
		<Xt>
		  <XtId>1</XtId>
		  <Size>Big</Size>
		  <Area>12345</Area>
		  <Hardness>20</Hardness>
		  <Lip>Curved</Lip>
		  <Color>Red</Color>
		  <Nice>N</Nice>
		  <Compact>Tiny</Compact>
		  <Material>Steel</Material>
		</Xt>'))"
);

oci8_test_sql_execute($c, $stmtarray);

function do_query($c)
{
	$s = oci_parse($c, 'select XMLType.getClobVal(xt_spec)
				        from xtt where xt_id = 1');
	oci_execute($s);
	$row = oci_fetch_row($s);
	$data = $row[0]->load();
	var_dump($data);
	return($data);
}

// Check
echo "Initial Data\n";
$data = do_query($c);

// Manipulate the data using SimpleXML
$sx = simplexml_load_string($data);
$sx->Hardness = $sx->Hardness - 1;
$sx->Nice = 'Y';

// Insert changes using a temporary CLOB
$s = oci_parse($c, 'update xtt
					set xt_spec = XMLType(:clob)
					where xt_id = 1');
$lob = oci_new_descriptor($c, OCI_D_LOB);
oci_bind_by_name($s, ':clob', $lob, -1, OCI_B_CLOB);
$lob->writeTemporary($sx->asXml());
oci_execute($s);
$lob->close();

// Verify
echo "Verify\n";
$data = do_query($c);

// Cleanup

$stmtarray = array(
	"drop table xtt",
);

oci8_test_sql_execute($c, $stmtarray);

echo "Done\n";

?>
--EXPECT--
Initial Data
string(250) "<?xml version="1.0"?>
		<Xt>
		  <XtId>1</XtId>
		  <Size>Big</Size>
		  <Area>12345</Area>
		  <Hardness>20</Hardness>
		  <Lip>Curved</Lip>
		  <Color>Red</Color>
		  <Nice>N</Nice>
		  <Compact>Tiny</Compact>
		  <Material>Steel</Material>
		</Xt>"
Verify
string(249) "<?xml version="1.0"?>
<Xt>
		  <XtId>1</XtId>
		  <Size>Big</Size>
		  <Area>12345</Area>
		  <Hardness>19</Hardness>
		  <Lip>Curved</Lip>
		  <Color>Red</Color>
		  <Nice>Y</Nice>
		  <Compact>Tiny</Compact>
		  <Material>Steel</Material>
		</Xt>
"
Done
